;const mongodb=require('mongodb').MongoClient;
const url='mongodb://localhost:27017';
//把数据库连接操作封装起来
function _connect(callback){
	mongodb.connect(url,function(err,db){
		if(err) throw err;
		callback(db);
	})
}
//添加数据
module.exports.insert=function(drname,gather,obj,callback){
	_connect(function(db){
		if(!(obj instanceof Array)){
			obj=[obj];
		};
		db.db(drname).collection(gather).insertMany(obj,(err,data)=>{
			if(err) throw err;
			db.close();//关闭文件;
			callback(data);
		})
	})
}
//查询所有数据
module.exports.findAll=function(drname,gather,callback,skip=0,limit=0){
	_connect(function(db){
		db.db(drname).collection(gather).find({}).skip(parseInt(skip)).limit(limit).toArray((err,a)=>{
			if(err) throw err;
			db.close();
			callback(a);
		})
	})
}
//精确查询 //如果有相同的用户名就不能注册（插入数据），如果没有相同的用户名就注册（插入数据）;
module.exports.find=function(drname,gather,obj,callback){
	_connect(function(db){
		db.db(drname).collection(gather).find(obj).toArray((err,a)=>{
			if(err) throw err;
			db.close();
			callback(a);
		})
	})
}
//模糊查询
module.exports.inquire=function(drname,gather,name,obj,callback){
	_connect(function(db){
		db.db(drname).collection(gather).find({name:{'$regex':obj}}).toArray((err,a)=>{
			if(err) throw err;
			db.close();
			callback(a);
		})
	})
}
//删除数据
module.exports.del=function(drname,gather,callback,obj={}){
	_connect(function(db){
		db.db(drname).collection(gather).deleteMany(obj,(err,a)=>{
			if(err) throw err;
			db.close();
			callback(a);
		})
	})
}
//更新数据
module.exports.update=function(drname,gather,obj,obj2,callback){
	_connect(function(db){
		db.db(drname).collection(gather).updateOne(obj,{$set:obj2},{upsert:true},{multi:true},function(err,a){
			if(err) throw err;
			db.close();
			callback(a);
		})
	})
}
//如果有数据就更新没有就插入数据；
module.exports.save=function(drname,gather,obj,callback){
	_connect(function(db){
		db.db(drname).collection(gather).save(obj,function(err,a){
			if(err) throw err;
			db.close();
			callback(a);
		})
	})
}

//升序降序
module.exports.sort=function(drname,gather,obj,callback,skip=0,limit=0){
    _connect(function(db){
		db.db(drname).collection(gather).find({}).sort(obj).skip(skip).limit(limit).toArray((err,a)=>{
			if(err) throw err;
			db.close();
			callback(a);
		})
	})	
}
// // 获取当前集合数据条数
module.exports.count=function(drname,gather,callback){
    _connect(function(db){
		let a=db.db(drname).collection(gather).count();
		callback(a);
	})
}